const EventEmmiter = require('events')
/**
 * bus.on(eventName, Handle ) 监听事件，同 addListener
 * bus.off(eventName, Handle ) 移除监听事件，同 removeListener
 * bus.emit(eventName[,...args]) 发出事件，可以携带一些参数
 */
const bus = new EventEmmiter()

function clickHandle(args) {
    console.log('监听到click事件', args)
}
bus.on("click", clickHandle)
bus.on("click", () => { console.log("hello") })
setTimeout(() => {
    bus.emit("click", "陈小源")
    bus.off("click", clickHandle)
    bus.emit("click", "kobe")
}, 2000)

// 返回当前 EventEmitter 对象注册的事件字符串组
console.log(bus.eventNames())

// 返回当前 EventEmitter 对象的最大监听器数量，默认是10，可以通过 setMaxListeners() 来修改
console.log(bus.getMaxListeners())

// 返回当前 EventEmitter 对象某一事件名称，监听器的个数
console.log(bus.listenerCount('click'))

// 返回当前 EventEmitter 对象某个事件监听器上所有的监听器数组
console.log(bus.listeners('click'))

/**
 * 其他方法
 * emitter.once(eventName, listener)    事件监听一次
 * emitter.prependListener()    将监听事件添加到最前面
 * emitter.removeAllListeners([eventName])：移除所有的监听器
 */